
/**
 * 后端返回状态码
 */
const SUCCESS_CODE = 0;

/**
 * 操作列 函数
 */
let optFunG = [];

$(function () {

    /**
     * ajax全局设置
     */
    $.ajaxSetup({
        timeout: 5000,
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            // console.log(XMLHttpRequest);
            // console.log(textStatus);
            // console.log(errorThrown);

            //响应内容
            let responseJSON = XMLHttpRequest.responseJSON;

            //响应状态码
            let status = XMLHttpRequest.status;
            if (status === 401) {
                //登录超时、未登录
                toastr.error(responseJSON.msg);
            } else if (status === 500) {
                //服务器内部错误
                toastr.error(responseJSON.msg);
            } else {
                if (!$.isEmptyObject(responseJSON) && !$.isEmptyObject(responseJSON.msg)) {
                    toastr.error(responseJSON.msg);
                } else {
                    toastr.error('服务器忙');
                }
            }
        }
    });

    /**
     * toastr 全局配置项
     */
    toastr.options = {
        closeButton: true,//是否显示关闭按钮（提示框右上角关闭按钮）；
        debug: false,//是否为调试；
        progressBar: true,//是否显示进度条（设置关闭的超时时间进度条）；
        positionClass: 'toast-top-right',//消息框在页面显示的位置
        /*
        *   toast-top-left  顶端左边
            toast-top-right    顶端右边
            toast-top-center  顶端中间
            toast-top-full-width 顶端，宽度铺满整个屏幕
            toast-botton-right
            toast-bottom-left
            toast-bottom-center
            toast-bottom-full-width*/
        onclick: null,//点击消息框自定义事件
        showDuration: "300",//显示动作时间
        hideDuration: "1000",//隐藏动作时间
        timeOut: "2000",//自动关闭超时时间
        extendedTimeOut: "1000",
        showEasing: "swing",
        hideEasing: "linear",
        showMethod: "fadeIn",//显示的方式，和jquery相同
        hideMethod: "fadeOut"//隐藏的方式，和jquery相同
    };
})

/**
 * 获取bootstrapTable 全局配置
 */
function getBtGlobalOptions() {
    return {
        uniqueId: "id",//指明哪个字段将用作复选框/单选框值
        idField: "id",//为每一行指示唯一的标识符。
        //singleSelect: false,//设置true 为允许复选框仅选择一行。默认值是false，多选模式
        //clickToSelect: true,//设置true 为在单击行时选择复选框或单选框。
        classes: 'table table-hover table-striped table-bordered',//表格样式，
        toolbar: '#toolbar',//工具栏
        showRefresh: true,//刷新
        showColumns: true,//隐藏列
        sortable: true,//设置 false为禁用所有列的可排序。
        queryParamsType: '',//如果 queryParamsType = 'limit'，params对象包含：limit, offset, search, sort, order. 否则，它包含：pageSize, pageNumber, searchText, sortName, sortOrder.
        pagination: true,//分页
        sidePagination: 'server',//服务器端分页
        pageNumber: 1,//页码
        pageSize: 10,//每页记录数
        pageList: [10, 25, 50, 100],//每页记录数选项
        locale: 'zh-CN',//本地化
        onPostBody: function (data) {
            //为操作列绑定事件
            $('.table-opt').each(function (index, ele) {
                let row = data[index];
                $(this).find("a").each(function (index, ele) {
                    let optFun = optFunG[index];
                    $(this).click(function () {
                        optFun(row);
                    });
                });
            });
        }
    };
}

/**
 * 生成 bootstrapTable 操作列
 */
function genBootstrapTableOptCol(width, optData) {
    if (optFunG.length == 0) {
        $.each(optData, function (index, value) {
            optFunG.push(value.callback);
        });
    }

    let a = '';
    $.each(optData, function (index, value) {
        a = a + '<a href="javascript:void(0);">'+ value.text +'</a>';
    });

    var result = {
        field: 'id',
        title: '操作',
        width: width,
        align: 'center',
        formatter: function (value, row) {
            let opt = '<div class="table-opt">'+ a +'</div>';
            return opt;
        }
    };
    return result;
}

/**
 * confirm
 */
function btConfirm(message, yesFun) {
    let confirmId = 'confirm';
    if ($('body').find('#' + confirmId).length != 0) {
        $('body').find('#' + confirmId).remove();
    }

    $('body').append(
        '<div id="' + confirmId + '" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" style="display: none;">\n' +
        '    <div class="modal-dialog modal-sm" role="document">\n' +
        '      <div class="modal-content">\n' +
        '        <div class="modal-header">\n' +
        '          <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>\n' +
        '          <h4 class="modal-title" id="mySmallModalLabel">确认</h4>\n' +
        '        </div>\n' +
        '        <div class="modal-body">\n' +
        '           <div>' + message + '</div>  ' + '\n' +
        '           <div style="text-align: right">' +
        '               <button type="button" class="btn btn-default" data-dismiss="modal" data-target="#' + confirmId + '">取消</button>\n' +
        '               <button type="button" class="btn btn-warning yes" data-dismiss="modal" data-target="#' + confirmId + '">确认</button>' +
        '           </button>  ' + '\n' +
        '        </div>\n' +
        '      </div>\n' +
        '    </div>\n' +
        '  </div>');

    //绑定“确认”事件
    $('#' + confirmId + ' .yes').click(yesFun);
    $('#' + confirmId).modal('toggle');
}

/**
 * 页面跳转，
 * @param url 跳转url，从根目录开始，如 /admin/workflow/flow_list.html
 */
function goto(url) {
    //$('#rightFrame', window.parent.document).attr('src', url);
    window.location.href = url;
}

(function ($) {
    $.getUrlParam = function (name) {
        let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
        let r = window.location.search.substr(1).match(reg);
        if (r != null) return decodeURI(r[2]);
        return null;
    }
})(jQuery);

